home *** CD-ROM | disk | FTP | other *** search
/ GameSpot.it / GameSpot Italia (2001).bin / demo / severancedemo / data1.cab / Program_Files / Lib / LavaDefDamage.py < prev    next >
Encoding:
Python Source  |  2000-10-13  |  6.3 KB  |  211 lines

  1. ############################################################################
  2. #
  3. #
  4. #    def CreateLava(entity_name,x,y,z,texture="LAVA",zoom=0.1,self_light=1):
  5. #        It creates a lava entity (with entity_name as name) in that given point (x,y,z)
  6. #        If you want , you can change the texture name with the 5th parameter
  7. #        6th: to change the zoom of the texture
  8. #       7th (new!) Change the degree of self ilumination (0-1)
  9. #
  10. #    Please note that the "TextureName" and "Zoom" parameter of the lava entity 
  11. #    can be changed in real time. Also , the self_light. Nice for real time effects ;)
  12. #
  13. #    Also note that the default name for the texture used is "LAVA" (in UPPER case!)
  14. #
  15. ############################################################################
  16.  
  17. import Bladex
  18. import Reference
  19. import Damage
  20. import netgame
  21. import GameStateAux
  22. import ObjStore
  23. import Actions
  24. import AbreCam
  25. import AuxFuncs
  26.  
  27. def TakeMe2Init(EntityName):
  28.     #print "TakeMe2Init"
  29.     me=Bladex.GetEntity(EntityName)    
  30.     me.LaunchAnmType("Rlx")    
  31.     pos=me.InitPos
  32.     me.Position=pos[0],pos[1],pos[2]
  33.     
  34.     
  35.  
  36. class LAVA_AREA:
  37.     entity_name=""
  38.     zoom=0.1
  39.     self_light=1.0
  40.     texture_name="LAVA"
  41.     particle_type="LargeFire"
  42.     ObjId=""
  43.  
  44.     def __init__(self):
  45.         self.ObjId=ObjStore.GetNewId() # Para identificarlo al grabar/guardar
  46.         ObjStore.ObjectsStore[self.ObjId]=self
  47.  
  48.     def __del__(self):
  49.         del ObjStore.ObjectsStore[self.ObjId]
  50.  
  51.     #Internal - Relocated particle entity to follow the burning character
  52.     def FuegoInLavaPlayer(self,obj_name, entity_damaged):
  53.  
  54.         #
  55.         # Particle system
  56.         #
  57.         fuego=Bladex.GetEntity(obj_name)
  58.         if not fuego:
  59.             return 
  60.         else:
  61.             if fuego.DeathTime<Bladex.GetTime():
  62.                 return
  63.  
  64.  
  65.         char=Bladex.GetEntity(entity_damaged)
  66.         l_ent=Bladex.GetEntity(self.entity_name)
  67.         fuego.Position=char.Position[0], l_ent.Position[1], char.Position[2]
  68.         Bladex.AddScheduledFunc(Bladex.GetTime()+0.1, self.FuegoInLavaPlayer, (obj_name,entity_damaged))
  69.  
  70.         #
  71.         # Sound effect
  72.         #
  73.         snd_name=self.entity_name+entity_damaged+"_snd"
  74.         sound=Bladex.GetEntity(snd_name)
  75.         if sound:
  76.             sound.Position=fuego.Position
  77.             print "checking if playing"
  78.             if sound.Playing==0:
  79.                 sound.PlaySound(0)
  80.         else:
  81.             print "NO SOUND!! ERROR!!!!"
  82.  
  83.     def LaunchFireInLava(self,entity_name,entity_damaged):
  84.         self.entity_name=entity_name
  85.         char=Bladex.GetEntity(entity_damaged)
  86.         l_ent=Bladex.GetEntity(entity_name)
  87.         pos= char.Position
  88.  
  89.         fuego_name=entity_name+entity_damaged+"_prtcls"
  90.         pfuego=Bladex.CreateEntity(fuego_name, "Entity Particle System D1", pos[0],l_ent.Position[1], pos[2])
  91.         pfuego.ParticleType=self.particle_type
  92.         pfuego.YGravity=0.0
  93.         pfuego.Friction=0.05
  94.         pfuego.PPS=128 
  95.         pfuego.Velocity=0.0, -1500.0, 0.0
  96.         pfuego.RandomVelocity=25.0
  97.         pfuego.Time2Live=16
  98.         Bladex.AddScheduledFunc(Bladex.GetTime()+0.2, self.FuegoInLavaPlayer, (fuego_name,entity_damaged))
  99.  
  100.         snd_name=entity_name+entity_damaged+"_snd"
  101.         sound=Bladex.GetEntity(snd_name)
  102.         if not sound:
  103.             sound=Bladex.CreateEntity(snd_name, "Entity Sound", pos[0], pos[1], pos[2] )
  104.             sound.SetSound("..\\..\\Sounds\\muerte-acida.wav")
  105.         else:
  106.             sound.Position=pos
  107.         sound.PlaySound(0)
  108.  
  109.  
  110.     def SetLastCameraPosition(self,counter,cam):
  111.         if counter >= 0:
  112.             cam.Position =    cam.Position[0],cam.Position[1]-10,cam.Position[2]
  113.             cam.TPos     =    cam.TPos[0],cam.TPos[1]-4,cam.TPos[2]
  114.             Bladex.AddScheduledFunc(Bladex.GetTime()+0.025,   self.SetLastCameraPosition,  (counter-0.025,cam))
  115.         
  116.         
  117.     def LavaDefTouchFunc(self,entity_name,entity_damaged,factor):
  118.         player=Bladex.GetEntity(entity_damaged)
  119.         if player.Life>0:
  120.             if player.Kind in Reference.LavaInmune:
  121.                 return            
  122.             if factor >= 1.0:
  123.                 player.Life=0
  124.                 if player.Name == "Player1":
  125.                     cam = Bladex.GetEntity("Camera")
  126.                     cam.SType    = 0
  127.                     cam.TType    = 0
  128.                     Lava = Bladex.GetEntity(entity_name)
  129.                     if Lava.Position[1] < cam.Position[1]:
  130.                         cam.Position = cam.Position[0], Lava.Position[1], cam.Position[2]
  131.                     AuxFuncs.FadeFrom(0.15,0.0,255,128,0)
  132.                     self.SetLastCameraPosition(5.0,cam)
  133.             else:
  134.                 player.Life=player.Life-factor*3
  135.         else:
  136.             return
  137.  
  138.         if player.Life<=0 and player.AnimName<>"dth_burn":
  139.             Actions.FireDeath(entity_damaged,self.particle_type,16)
  140.             if netgame.GetNetState()==1: # Juego en red -> servidor
  141.                 Damage.PlayerHitFunc(player.Name,"Lava", player.Life, 1)                
  142.  
  143.  
  144.         my_fire=Bladex.GetEntity(entity_name+entity_damaged+"_prtcls")
  145.         if not my_fire:
  146.             self.LaunchFireInLava(entity_name,entity_damaged)
  147.             my_fire=Bladex.GetEntity(entity_name+entity_damaged+"_prtcls")
  148.             
  149.         my_fire.DeathTime=Bladex.GetTime()+0.2
  150.  
  151.  
  152.  
  153.     def CreateLava(self,entity_name,x,y,z,texture="LAVA",zoom=0.1,slight=1,particle_type="LargeFire"):
  154.         self.entity_name=entity_name
  155.         self.texture_name=texture
  156.         self.zoom=zoom
  157.         self.sleft_light=slight
  158.         self.particle_type=particle_type
  159.         tmp_lava=Bladex.CreateEntity(entity_name,"Entity Lava",x,y,z)
  160.         tmp_lava.TextureName=texture
  161.         tmp_lava.Zoom=zoom
  162.         tmp_lava.SelfLight=slight
  163.         tmp_lava.TouchFluidFunc=self.LavaDefTouchFunc
  164.  
  165.     def persistent_id(self):
  166.         return self.ObjId
  167.  
  168.     def __getstate__(self):
  169.         # Tiene que devolver cΣ«» poder guardar el estado de la clase
  170.         return (1,
  171.                 self.ObjId,
  172.                 self.entity_name,
  173.                 self.zoom,
  174.                 self.texture_name,
  175.                 self.self_light,
  176.                 self.particle_type,
  177.                 GameStateAux.SaveNewMembers(self)
  178.                 )
  179.  
  180.     def __setstate__(self,parm):
  181.         # Toma como parΓ«Ñtro lo que devuelve __getstate__() y debe recrear la clase
  182.  
  183.         if parm[0]==1:
  184.             self.ObjId=parm[1]
  185.             ObjStore.ObjectsStore[self.ObjId]=self
  186.             self.entity_name=parm[2]
  187.             self.zoom=parm[3]
  188.             self.texture_name=parm[4]
  189.             self.self_light=parm[5]
  190.             self.particle_type=parm[6]
  191.             GameStateAux.LoadNewMembers(self,parm[7])
  192.  
  193.             if self.entity_name:
  194.                 my_ent=Bladex.GetEntity(self.entity_name)
  195.                 my_ent.TextureName=self.texture_name
  196.                 my_ent.Zoom=self.zoom
  197.                 my_ent.SelfLight=self.self_light
  198.                 my_ent.TouchFluidFunc=self.LavaDefTouchFunc
  199. ##            if self.obj:
  200. ##                self.obj.Data=self
  201. ##            GameStateAux.LoadedPickledData[self.ObjId]=self
  202.         else:
  203.             print "DinObj.__setstate__() -> Version mismatch"
  204.             # Valores de creaciΣ«ápor si valen para algo.
  205.             self.entity_name=""
  206.             self.zoom=0.1
  207.             self.texture_name="LAVA"
  208.             self.particle_type="LargeFire"
  209.             self.ObjId=ObjStore.GetNewId()
  210.             ObjStore.ObjectsStore[self.ObjId]=self
  211.